import request from '@/utils/request'

/**
 * 菜单管理服务类
 * 提供与后端菜单相关的 API 交互方法
 */
export abstract class MenuRequest {
  /** 创建菜单 */
  static create(createDto: MenuType.Entity): Promise<string> {
    return request.post('/system/menu/create', createDto)
  }

  /** 根据 ID 删除单个菜单 */
  static deleteOneById(params: { menuId: string }): Promise<string> {
    return request.delete(`/system/menu/delete`, { params })
  }

  /** 更新菜单 */
  static update(updateDto: MenuType.Entity): Promise<string> {
    return request.post('/system/menu/update', updateDto)
  }

  /** 获取菜单列表 */
  static findList(params: Partial<MenuType.Entity>): Promise<MenuType.Entity[]> {
    return request.get('/system/menu/list', { params })
  }

  /** 根据 ID 获取单个菜单详情 */
  static findOneById(params: { menuId: string }): Promise<MenuType.Entity> {
    return request.get(`/system/menu/detail`, { params })
  }

  /** 获取父级菜单列表 */
  static findParentList(): Promise<MenuType.TreeEntity[]> {
    return request.get(`/system/menu/findParentList`)
  }
}
